package com.zhdl.hardware.motor.buke.repository;

import com.zhdl.modules.tools.CommonCallback;

public interface BukeMotorCmdHandleDao {

    /**
     * 0x03 获取电机状态(包括Y轴与X轴)
     * 0x3200 状态字节显示驱动器的状态
     * 读取状态字，9437 表示原点找到
     * 01 03 32 00 00 01 8A B2
     *
     * @param slaveStationId 从站Id
     */
    void bukeMotorStatus(String slaveStationId, CommonCallback<String> callback);

    /**
     * 0x06 写单个线圈寄存器 设置运动方式
     * 0x3100  控制字  先 F  后 1F   绝对位置运动时，上次目标位置到后，电机开始运动
     * 先 2F 后 3F   绝对位置运动时，电机立即开始运动
     * 01 06 31 00 00 2F C6 EA   01 06 31 00 00 3F C7 26
     *
     * @param slaveStationId 从站Id
     * @param motorRunType   运动方式
     */
    void bukeSetRunType(String slaveStationId, String motorRunType);

    /**
     * 0x10 写多个线圈寄存器 设置梯形速度
     * 0x4A00  梯形速度    值200RPM (00 00 00 32) (50)
     * 01 10 4A 00 00 02 04 00 00 00 32 3D 19
     *
     * @param slaveStationId 从站Id
     * @param tSpeedValue    梯形速度
     */
    void bukeSetRunTSpeed(String slaveStationId, Integer tSpeedValue);

    /**
     * 0x10 写多个线圈寄存器 设置目标位置
     * 0x4000  目标位置    值50000DEC (C3 50 00 00)
     * 01 10 4A 00 00 02 04 00 00 00 32 3D 19
     *
     * @param slaveStationId   从站Id
     * @param destinationValue 脉冲数
     */
    void bukeSetRunDistance(String slaveStationId, Integer destinationValue);

    /**
     * 步科电机-电机找原点
     *
     * @param slaveStationId 从站Id
     */
    void bukeBackOrigin(String slaveStationId);

    /**
     * 步科电机-电机移动
     * 设置位置模式1,控制电机寻找目标位置
     *
     * @param slaveStationId   从站Id
     * @param destinationValue 脉冲数
     * @param tSpeedValue      梯形速度
     */
    void bukeMotorRun(String slaveStationId, Integer destinationValue, Integer tSpeedValue);

    /**
     * 步科电机-电机停止
     */
    void bukeMotorStop(String slaveId);
}
